Description |
---|
Cette macro utilise l'outil Draft Forme à partir d'un texte pour créer une ligne de texte placée dans différentes orientations circulaires, y compris circonférentielle et hélicoïdale (à la manière d'une colonne Trajane). Elle peut également être utilisée pour créer un cadran d'horloge avec des chiffres arabes 1, 2, 3 etc., ou des chiffres romains I, II, III, etc. Version macro : 0.22e Date dernière modification : 2024/07/11 Version FreeCAD : 0.19 et au-dessus Téléchargement : Icône de la barre d'outils Auteur: Mario52 |
Auteur |
Mario52 |
Téléchargement |
Icône de la barre d'outils |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
0.22e |
Dernière modification |
2024/07/11 |
Version(s) FreeCAD |
0.19 et au-dessus |
Raccourci clavier |
None |
Voir aussi |
None |
Cette macro utilise l'outil Draft Formes à partir texte pour créer une ligne de texte placée dans différentes orientations circulaires, notamment circonférentielle et hélicoïdale comme par ex la colonne Trajane. Elle peut également être utilisée pour créer un cadran d'horloge avec des chiffres arabes 1, 2, 3... ou des chiffres romains I, II, III... . Cette dernière utilisation a été inspirée par le fil du Forum Macro pour créer un cadran d'horloge par un membre de la communauté FreeCAD, cblt2l.
Temporary code for external macro link. Do not use this code. This code is used exclusively by Addon Manager. Link for optional manual installation: Macro
# This code is copied instead of the original macro code # to guide the user to the online download page. # Use it if the code of the macro is larger than 64 KB and cannot be included in the wiki # or if the RAW code URL is somewhere else in the wiki. from PySide import QtGui, QtCore diag = QtGui.QMessageBox(QtGui.QMessageBox.Information, "Information", "This macro must be downloaded from this link\n" "\n" "https://gist.githubusercontent.com/mario52a/a25e802498bae6959335/raw/b80bc84eb1f39084a20564cf02c48764906fd6b8/Macro_FCCircularText.FCMacro" + "\n" "\n" "Quit this window to access the download page") diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) diag.setWindowModality(QtCore.Qt.ApplicationModal) diag.exec_() import webbrowser webbrowser.open("https://gist.githubusercontent.com/mario52a/a25e802498bae6959335/raw/b80bc84eb1f39084a20564cf02c48764906fd6b8/Macro_FCCircularText.FCMacro")
Exemple de la macro affichant le texte avec une orientation à 360 degrés
La création d'un texte génère un dossier FcString, la création d'une horloge génère un dossier FcClock.
Tous les caractères restent indépendants. Si vous créez une extrusion, rien n'est effacé. Si vous créez un Compound avec le bouton Run Comp, il sera créé dans l'arbre principal de votre projet.
Ces options sont grisées par défaut et activées en cochant le bouton :
A l'exception d'une boîte de placement Clock Z est activée et déplace le texte dans la direction Z pour placer le texte sur la surface de support.
Présentation générale
Après la première utilisation, vous devez modifier les paramètres suivants:
User parameter:BaseApp/Preferences/Macros/FCMmacros/FCCircularText
switchModeTextList
switchFontComBox
setSystemFonts
seTtextAlignement
setFontByDefault
switchResetFALSE
Exemple
false
false
false
true
false
false
true
false
false
true
true
false
Configurer des caractères dans FCCircularText
Votre choix :
Outdoor
Indoor
Helix
Clock
Mode Stand Outdoor Le texte est écrit debout (direction Z lecture externe).
Mode Flat Outdoor Le texte est écrit à plat (lecture externe).
Mode Flat Indoor Le texte est placé à plat lecture interne (comme clock).
Mode Stand Indoor Le texte est écrit debout avec lecture interne.
Cette section vous permet de configurer le comportement global des caractères dans tous les choix disponibles, mais avec quelques variations. Si une fonction n'est pas utilisée de façon standard dans l'option choisie, cette fonction sera grisée.
Mode par défaut. Le texte est écrit sur la surface extérieur du cylindre.
Outdoor
Le texte est écrit sur la surface interne d'un tube ou courbe.
Indoor
Le texte écrit suit le tracé d'une hélice.
Helix
Les chiffres font partie d'un cercle avec des chiffres arabes ou romains.
Clock
Axial
Redress
La section de titre change et affiche la longueur du fil sélectionné.
Si vous sélectionnez un fil, un arc, un cercle, une ligne et une arête, le chemin de la section est coloré en vert et la commande inutilisée est colorée en rouge
le dernier bouton radio utilisé est enregistré dans le paramètre de FreeCAD
Certains paramètres sont disponibles dans les paramètres de FreeCAD voir: Menu → Outils → Modifier les paramètres...
switchModeTextList
:
false
le mode texte normal (et noir) désactive switchFontComBoxtrue
autorise switchFontComBox 1 (par défaut)switchFontComBox
:
false
(et switchModeTextList = 1) mode texte (en couleur) dans la liste Faster ComboBox (par défaut)true
(et switchModeTextList = 1) famille de polices dans la liste ComboBox plus lente mais plus belle!setSystemFonts
:
false
matplotlib.font_manager.findSystemFonts ("C: /", "ttf") font toutes les polices (dans tous les dossiers et sous-dossiers du HD) temps!!true
fontman.findSystemFonts (self.pathFont)seTtextAlignement
: 0 = AlignLeft (par défaut) 1 = AlignCenter 2 = AlignRightsetFontByDefault
: Police par défaut (la dernière utilisée)switchResetFALSE
: false
reset (par défaut), true
pas de réinitialisation (non recommandé) certains commutateurs peuvent rester ouverts ou se fermer de manière inattendue!setPathOrthogonal
: true
false
setPathTangent
: true
false
setPositionBase
: true
false
setPositionCenter
: true
false
setPositionTop
: true
false
switchVersionSearch
: true
false
Version
: version de FCCircularTextEn lançant la macro un un dossier FcString est créé pour les caractères et un dossier FcClock est créé pour l'horloge. Dans le cas d'un compount, il sera créé en plus sur la racine de l'arbre.
L'icône pour votre barre à outils:
(Voir comment Créer une barre d'outils)
Macro_Circular_Text.FCMacro
ou bien téléchargez le script :
- sur github Macro_FCCircularText.FCMacro
- sur le forum Extrude from curved surface of cylinder
Texte début à 180 degrés (Begin angle) fin d'angle 360 degrés (End angle) courbe externe.
Texte sur une courbe externe.
Texte circulaire sur courbe interne et externe.
Texte circulaire sur un objet plat.
Configuration supérieure. (Cliquez pour agrandir)
Configuration inférieure. (Cliquez pour agrandir)
Courbe externe.
Courbe interne.
Courbe interne avec extrusion et soustraction booléenne.
Courbe externe.
Courbe interne et soustraction.
Extrusion sur un cône avec comme paramètres Sp. Inclination 45° axe Z.
Anneau avec courbe interne et soustraction.
Pivot character 0°, 90°, ....
Créer votre ellipse ici 100x50.
Exrtusion sur 50 mm.
Discretiser le périmètre et créez des point repères avec la macro Work Features.
Tab Point > Point 2/3 > Points=Cut (Wire)
Créez uns cercle sur 3 points avec la macro Work Features.
Tab Circle Circle=(3 Points)
Créez un point au centre du cercle avec la macro Work Features.
Tab Point > Point 1/3 > Circle(s) center.
Créez des lignes repères pour déterminer les angles et configurez FCCircularText.
Créez votre texte en cliquant sur le bouton Run Comp.
Effacez le cercle, les points et lignes.
Ellipses.
Mode relief:
Sélectionnez le rectangle , l'ellipse et créez un compound
Activez Part module, puis Menu Pièces > Créer un composé.
Extrudez le composé en cochant "Créer un solide".
The text is cut in the shape of the ellipse.
Texte placé BoundBox Base (normal)
Texte placé BoundBox Centre du caractere
Texte en haut de la boîte de délimitation
Texte sur la ligne sélectionnée :
1 : orthogonal
2 : tangent
Exemple d'utilisation (Texte incurvé sur une surface plane ?)
Remarque il est possible qu'une erreur se produise entre les versions. Veuillez publier le problème sur le forum et attendre le correctif mis à jour ou revenir à une version précédente de la macro. Je vous remercie.
Il est possible que deux caractères se chevauchent. Si cela se produit, voici une solution de contournement disponible à l'aide de la Rotate-To-Point Macro.
Character overlap issue and the workaround
(pas totalement développé)
En projet:
Écriture du texte sur l'objet sélectionné
Écriture sur un chemin.
see Curved text on a flat surface?
sel = Gui.Selection.getCompleteSelection()
#delete objects
#restore previous selection
Gui.Selection.clearSelection()
for s in sel:
Gui.Selection.addSelection(s.Object,s.SubElementNames)
FreeCAD.ActiveDocument.openTransaction("FCCTc")
pour le système Undo/Redo.ver 16d 2020/09/15 : voir le message de MasterCATZ commented Sep 14, 2020 message
effacé la partie de test de la version 0.18:
#### Test FreeCAD.Version simple ############################################################################################################
if int(FreeCAD.Version()[1]) < 18: # Version de FreeCAD
FreeCAD.Console.PrintMessage("This version " + __Title__ + " rmu work with the FreeCAD 0.18 or higher." + "\n\n")
FreeCAD.Console.PrintMessage("For the precedent version see the page " + "\n\n")
FreeCAD.Console.PrintMessage("https://gist.githubusercontent.com/mario52a/a25e802498bae6959335/raw/db47f78f2b20a35137ac213b8d1a62d30f525dcb/Macro_FCCircularText.FCMacro" + "\n\n")
#### Test FreeCAD.Version simple ############################################################################################################
OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.20655 (Git)
Build type: Release
Branch: master
Hash: e8e67e8c5ebbc9f9ed9ea67aba5b891969595ece
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
carDegrees = b' \xc2\xb0'.decode("utf-8") #thanks wmayer https://forum.freecadweb.org/viewtopic.php?f=13&t=36380&p=308476#p308357 self.DS_InclinaisonX.setSuffix(carDegrees) self.DS_InclinaisonY.setSuffix(carDegrees) self.DS_InclinaisonZ.setSuffix(carDegrees)
latest testing:
#OS: Windows 10
#Word size of OS: 64-bit
#Word size of FreeCAD: 64-bit
#Version: 0.19.16523 (Git)
#Build type: Release
#Branch: master
#Hash: 9b3ec233c8b21e0df66fada487cd10f471d60cac
#Python version: 3.6.6
#Qt version: 5.6.2
#Coin version: 4.0.0a
#OCC version: 7.3.0
remplacer la ligne:
for angleTr in range(debut,rotation,((rotation-debut)/nombre)):
par
for angleTrFloat in range((debut*10000),(rotation*10000),int((round(((float(rotation)-float(debut))/float(nombre)),4)*10000)) ): # pour 4 decimales
angleTr = (float(angleTrFloat)/10000)
supp.MakeFace = True
App.activeDocument().recompute()
replace
self.DS_InclinaisonX.setSuffix(" X°")
self.DS_InclinaisonY.setSuffix(" Y°")
self.DS_InclinaisonZ.setSuffix(" Z°")
to
self.DS_InclinaisonX.setSuffix(unicode(" X°"))
self.DS_InclinaisonY.setSuffix(unicode(" Y°"))
self.DS_InclinaisonZ.setSuffix(unicode(" Z°"))
# ver 0.8 10/05/2015 /_ # testing with OS :
##################################################################################################
# OS: Ubuntu 14.04.1 LTS # OS: Ubuntu 14.04.2 LTS
# Platform: 32-bit # Word size of OS: 32-bit
# Version: 0.14.2935 (Git) # Word size of FreeCAD: 32-bit
# Branch: master # Version: 0.16.4928 (Git)
# Hash: eab159b6ee675012bf79de838c206a311e911d85 # Branch: master
# Python version: 2.7.6 # Hash: d8f63bcfd10301f3d1e141cced4370f0782238d0
# Qt version: 4.8.6 # Python version: 2.7.6
# Coin version: 4.0.0a # Qt version: 4.8.6
# SoQt version: 1.6.0a # Coin version: 4.0.0a
# OCC version: 6.7.0 # OCC version: 6.8.0.oce-0.17
##################################################################################################
# OS: Windows Vista # OS: Windows Vista
# Word size of OS: 32-bit # Word size of OS: 32-bit
# Word size of FreeCAD: 32-bit # Word size of FreeCAD: 32-bit
# Version: 0.15.4527 (Git) # Version: 0.15.4671 (Git)
# Branch: master # Branch: releases/FreeCAD-0-15
# Hash: 0da2e4c45a9a259c26abd54c2a35393e1c15696f # Hash: 244b3aef360841646cbfe80a1b225c8b39c8380c
# Python version: 2.7.8 # Python version: 2.7.8
# Qt version: 4.8.6 # Qt version: 4.8.6
# Coin version: 4.0.0a # Coin version: 4.0.0a
# OCC version: 6.7.1 # OCC version: 6.8.0.oce-0.17
##################################################################################################
(2537)
La page dédiée sur le forum pour tout commentaires et signalisation d'éventuelles erreurs Extrude from curved surface of cylinder